#pragma once

#include <vector>
#include <string>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>

class IStream
{
public:
	friend class boost::serialization::access;
	virtual void addBack(const std::string& data) = 0;
	virtual void addFront(const std::string& data) = 0;
	virtual void addAt(const std::string& data, int offset) = 0;
	virtual std::string getBufferContent() const = 0;

	virtual void removeElements(int offset, int count) = 0;

	template<class Archive> 
	void serialize(Archive & ar, const unsigned int version) 
	{
		
	}

	virtual ~IStream(void)
	{
	}
};

BOOST_SERIALIZATION_ASSUME_ABSTRACT(IStream)
